#ifndef MTTGPUMONITOR_H
#define MTTGPUMONITOR_H
#include <gpu_monitor_interface.h>
#include <QProcess>
#include <optional>
#include <QString>
#include <QStringList>
#include <cmath>
#include <QRegularExpression>

class MTTGpuMonitor : public GpuMonitorInterface
{
public:
    MTTGpuMonitor();
    ~MTTGpuMonitor();

    std::optional<double> getGpuCoreUsage() override;
    std::optional<double> getGpuMemUsage() override;
    std::optional<double> getGpuCoreTemp() override;

private:
    // 执行mthreads-gmi命令并返回输出
    std::optional<QString> executeMTCommand(const QStringList& arguments);
    
    // 从利用率信息中解析GPU使用率
    std::optional<double> parseUtilizationInfo(const QString& utilizationOutput);
    
    // 从内存信息中解析内存使用率
    std::optional<double> parseMemoryUsageInfo(const QString& memoryOutput);

};

#endif // MTTGPUMONITOR_H